package ctr.stage;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import jdbc.Connexion;
import metier.Stage;
import metier.jdbc.CommunJdbc;
import metier.jdbc.StageJdbc;
import vue.stage.JPanAjoutStage;
import configuration.Constante;
import configuration.MessageAppli;

public class GestAjoutStage implements ActionListener{

	private JPanAjoutStage jPanAjoutStage;
	
	public GestAjoutStage(JPanAjoutStage jPanAjoutStage) {
		this.jPanAjoutStage = jPanAjoutStage;
	}

	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		
		// Permet depuis le champ de saisi ou du bouton de créer le stage.
		if (actionEvent.getSource() instanceof JTextField) {
			ajoutStage();
		}else if (actionEvent.getSource() instanceof JButton){
			ajoutStage();
		}
	}
	
	/**
	 * Permet l'ajout d'un stage.
	 */
	private void ajoutStage(){
		// ActionListener du JTextField.
		JTextField champSaisie = jPanAjoutStage.getJtf_NomStage();
		
		try {
			// Test du nom du stage.
			if ( "".equals(champSaisie.getText())){
				throw new Exception(MessageAppli.MSG_REMPLIR_CHAMPS);
			}else if (champSaisie.getText().length() > 30){
				throw new Exception(MessageAppli.MSG_CHAMPS_MAX + "30");
			}else if (!champSaisie.getText().matches(Constante.REGEX_ALPHANUM)) {
				throw new Exception(MessageAppli.MSG_CHAMPS_ALPHANUM);
			}
			
			// On recherche si un stage ayant le meme nom
			// TODO creer
			if( !StageJdbc.stageExisteByNom(Connexion.getConnexion(), champSaisie.getText())){ 
				if ( StageJdbc.ajouter(Connexion.getConnexion(), stage)) {
					JOptionPane.showMessageDialog(null,MessageAppli.MSG_STAGE_CREATION_OK, MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
				}else{
					throw new Exception(MessageAppli.MSG_STAGE_CREATION_KO);
				}
				champSaisie.setText("");
			} else { 
				throw new Exception(MessageAppli.MSG_STAGE_DEJA_EXISTANT);
			}
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, e.getMessage(), MessageAppli.MSG_TITRE_INFO, JOptionPane.WARNING_MESSAGE);
		}
	}
}